/*
 * @Author: your name
 * @Date: 2021-08-25 09:27:45
 * @LastEditTime: 2021-08-28 18:14:49
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \orderSystems\src\http\axios.js
 */
import Axios from 'axios';
import router from '../router/index.js';
import {Loading} from "element-ui";
 //创建一个Axios的实例
 let axios = Axios.create({
    timeout: 10000,
    // baseURL: 'http://172.16.8.22:8082/admin'
    // baseURL: 'http://49.235.240.193:8080/admin'
    baseURL:'http://172.16.8.6:8082/admin'
  })
Axios.defaults.baseURL="http://172.16.8.6:8082/admin"
export default axios;
let loadingInstance;//加载动画的对象
//请求前，拦截请求

axios.interceptors.request.use(requestConfig=>{
    // console.log('请求前的config',requestConfig);
    let token = sessionStorage.getItem('token');
    // console.log(token);
    //判断有没有token ，有就添加到请求头
    token && (requestConfig.headers['token'] = token);
    // console.log('请求前的config:', requestConfig)
    //显示 加载数据的动画
    loadingInstance = Loading.service({
      fullscreen: true,
      text: '正在为您努力加载中...',
      background: 'rgba(0,0,0,0.5)'
    })
  
    return requestConfig;
}, error => Promise.reject(error));

//响应后，拦截响应
axios.interceptors.response.use(res=>{
    // console.log("响应后的xxxxxxxres:", res)  //看一下如何正确的获取token值；
  // 判断toKen如果获取，决定下一行代码的写法：
  // 还有可能是： res.data.data.token;
//   console.log('响应后的config',res.config);
     let token = sessionStorage.getItem('token');
     token && (res.headers['token'] = token);
// res.data.data[1].token && sessionStorage.setItem('token', res.data.data[1].token)

  // res.data.data[1].token && sessionStorage.setItem('token', res.data.data[1].token)

  // 成功响应后，关闭动画
  loadingInstance.close();
  return res;
},error => {
    // console.log("响应后err:", error)
    // 可以根据响应的状态码，判断应该如何处理token;
    // 直接输出时，只能看到error的信息，但error也是一个对象。
    let _resp = error.response;
    // console.log(_resp)
    // 主要是应对token过期，或者是无效的token.
    switch (_resp.status) {
      case 401:
        // case 500:
        sessionStorage.removeItem('token');
        return router.push('/login');
    }
    return Promise.reject(error.response.data)
});